<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- 有效的正方形

```
给定2D空间中四个点的坐标 p1, p2, p3 和 p4，如果这四个点构成一个正方形，则返回 true 。
  点的坐标 pi 表示为 [xi, yi] 。 输入没有任何顺序 。
  一个 有效的正方形 有四条等边和四个等角(90度角)。

  示例 1:
  输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]
  输出: True

  示例 2:
  输入：p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,12]
  输出：false

  示例 3:
  输入：p1 = [1,0], p2 = [-1,0], p3 = [0,1], p4 = [0,-1]
  输出：true
 -->
</head>
<body>
  <script>
   var validSquare = function (p1, p2, p3, p4) {
  let [A, B, D, C] = [p1, p2, p3, p4].sort((a, b) => {
    if(a[1] == b[1]){
      return a[0] - b[0]
    }else{
      return b[1] - a[1]
    }
  });
  // 因不用求出边长具体值，所以不必开方
  const calDistance = (A, B) => {
    return Math.pow(A[0] - B[0], 2) + Math.pow(A[1] - B[1], 2);
  }

  let a = calDistance(A, B)
  let b = calDistance(B, C)
  let c = calDistance(C, D)
  let d = calDistance(D, A)
  let l1 = calDistance(A, C)
  let l2 = calDistance(B, D)

  return a == b && b == c && c == d && d == a && a != 0 && l1 == l2;
};
console.log(validSquare([0,0], [1,1], [1,0],[0,2]));
  </script>
</body>
</html>